package com.tensquare.friend.service;

import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @description
 * @author: xu1
 **/
@Service
@Transactional
public class FriendService {

    @Autowired
    private FriendDao friendDao;

    @Autowired
    private NoFriendDao noFriendDao;

//    @Autowired
//    private UserClient userClient;


    //互相喜欢字段  0和1    单方喜欢就是0
    public int addFriend(String userid, String friendid) {
        //几种情况   userid friendid iklike
        //注意联合主键的 查询 和sql 语句的不同

        //重复添加的情况 返回0 userid 已经有了friendid了
        Friend findFriend = friendDao.findByUseridAndFriendid(userid, friendid);
        if (findFriend != null) {
            return 0;
        }

        //互相都没有，表中直接添加 userid friendid iklik=0
        Friend friend = new Friend(); //能省的代码得省 上面的 findFriend 直接可以用
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIslike("0");
        friendDao.save(friend);//单表保存不需要自己写


        //看下是否  有了互相喜欢的 情况，有了就改 双方的 数据
        //friendid 已经有了、喜欢了userid了，两条记录，状态改为1, userid friendid iklik=1
        Friend reverseFriend = friendDao.findByUseridAndFriendid(friendid, userid);
        if(reverseFriend!=null){ //能省的代码得省， Friend reverseFriend 可以直接省
            friendDao.updateIslike("1", userid, friendid);
            friendDao.updateIslike("1", friendid, userid);
        }
        return 1;
    }

    public int addNoFriend(String userid, String friendid) {
        //重复添加的情况 返回0 userid 已经有了friendid了
        NoFriend friend = noFriendDao.findByUseridAndFriendid(userid, friendid);
        if (friend != null) {
            return 0;
        }
        //非好友表 里面添加 数据
        friend = new NoFriend();
        friend.setFriendid(friendid);
        friend.setUserid(userid);
        noFriendDao.save(friend);
        return 1;

    }

    public void deleteFriend(String userid,String friendid) {
        //伴随着的业务
        //不能重复删除---不出出现没考虑

        //friend表 删除好友
        friendDao.deletefriend(userid, friendid);
        //friend表 里面 相互喜欢的 改变
        friendDao.updateIslike("0", userid, friendid);

        //user表 粉丝数、关注数的改变 ---控制层 直接远程调用了

        //nofriend表 添加数据
        NoFriend noFriend = new NoFriend();
        noFriend.setUserid(userid);
        noFriend.setFriendid(friendid);
        noFriendDao.save(noFriend);
    }
}
